package top.lixunda.ecommerce.server.good.api.controller;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import top.lixunda.commerce.common.core.entity.MessageObject;

import java.util.List;
import java.util.Map;

/**
 * 简单评论点赞管理接口
 *
 * @author Xumda
 * @version time:2020/1/14 15:45
 */
@SuppressWarnings("unused")
@Api("简单评论点赞管理接口")
@RequestMapping("/simple_review_praise")
public interface ISimpleReviewPraiseController {

    /**
     * 根据简单评论的id获取当前评论的点赞数量
     *
     * @param id 评论id
     * @return 点赞次数
     */
    @ApiOperation("根据简单评论的id获取当前评论的点赞数量")
    @GetMapping("queryPraiseCountById")
    MessageObject<Integer> queryPraiseCountById(@RequestParam("id") Integer id);

    /**
     * 根据多个评论id获取多个评论的点赞次数
     *
     * @param ids 评论id的列表
     * @return 键值对，键为评论id，值为评论点赞次数
     */
    @ApiOperation("根据多个评论id获取多个评论的点赞次数")
    @PostMapping("queryPraiseCountByIds")
    MessageObject<Map<Integer, Integer>> queryPraiseCountByIds(@RequestBody List<Integer> ids);

    /**
     * 对某个商品的某个简单评论进行一次点赞
     *
     * @param reviewId 评论id
     * @return 点赞后的该评论的点赞次数
     */
    @ApiOperation("对某个商品的某个简单评论进行一次点赞")
    @GetMapping("addPraiseById")
    MessageObject<Integer> addPraiseById(@RequestParam("reviewId") Integer reviewId);

    /**
     * 取消对某个评论的点赞
     *
     * @param reviewId 评论id
     * @return 取消点赞后的该评论的点赞次数
     */
    @ApiOperation("取消对某个评论的点赞")
    @GetMapping("cancelPraiseById")
    MessageObject<Integer> cancelPraiseById(@RequestParam("reviewId") Integer reviewId);

    /**
     * 当前登陆用户是否对某个评论进行点赞
     *
     * @param reviewId 评论id
     * @return 是否进行点赞
     */
    @ApiOperation("当前登陆用户是否对某个评论进行点赞")
    @GetMapping("currentPraiseFlagById")
    MessageObject<Boolean> currentPraiseFlagById(@RequestParam("reviewId") Integer reviewId);

    /**
     * 当前登陆用户是否对某些评论进行点赞
     *
     * @param reviewIds 评论id列表
     * @return 是否进行点赞，键值对，键为评论编号，值为是否点赞
     */
    @ApiOperation("当前登陆用户是否对某个评论进行点赞")
    @PostMapping("currentPraiseFlagByIds")
    MessageObject<Map<Integer, Boolean>> currentPraiseFlagByIds(@RequestBody List<Integer> reviewIds);

}
